package com.guo.boot.study.thread;

/**
 * @author HeartGuo
 * @date 2021/12/22 0022 - 21:54
 */
/*
    静态代理模式
    真实对象和代理对象都要实现同一个借口
    代理对象要代理真是角色

    好处：
        代理对象可以做很多真是对象做不了的事情
        真是对象专注自己的事情




*
* */
public class StaticProxy {
    public static void main(String[] args) {
        WeddingCompary weddingCompary = new WeddingCompary(new You());
        weddingCompary.HappyMarry();
    }
}
interface Marry{
    void HappyMarry();
}

//真实角色
class You implements Marry{

    @Override
    public void HappyMarry() {
        System.out.println("haha");
    }
}

//代理角色
class WeddingCompary implements Marry{
    private Marry target;

    public WeddingCompary(Marry target) {
        this.target = target;
    }

    @Override
    public void HappyMarry() {
        before();
        this.target.HappyMarry();
        after();
    }

    private void after() {
        System.out.println("婚礼之后收尾款");
    }

    private void before() {
        System.out.println("结婚之前布置现场");
    }
}